Micron Document
Fox's Git Mirrors


Displaying Rendered • View rawDownload

README-RU.md HEAD (530aca49) Text, 6.71 KB

RNS-over-HTTP

Интерфейс Reticulum, который туннелирует трафик через стандартные HTTP/S POST-запросы. Это позволяет Reticulum работать в сетях, где разрешён только веб-трафик, эффективно обходя файрволы, DPI и другие ограничения.

Границы пакетов на HTTP-теле используют то же упрощённое HDLC-фреймирование, что и T383838PipeInterface Reticulum, поэтому несколько пакетов могут передаваться в одном теле запроса или ответа без слияния.

Не-GitHub-зеркало. Кроме того, файлы проекта доступны в сети Reticulum по адресу T383838RNS-over-HTTP.

Обзор

RNS-over-HTTP создаёт двунаправленный транспортный уровень, используя простую клиент-серверную модель:

Сервер: Запускается на машине с публичным IP-адресом и прослушивает HTTP-запросы.
Клиент: Может находиться за файрволом или NAT, ему требуется только исходящий доступ в интернет.

Клиент опрашивает сервер с помощью HTTP POST-запросов, отправляя исходящие данные в теле запроса и получая входящие данные в теле ответа. Это делает трафик похожим на обычную веб-активность.

Как это работает

Интерфейс имитирует постоянное соединение, используя механизм, подобный long-polling:

1. Клиент отправляет HTTP POST на сервер с ожидающими HDLC-фреймами в теле запроса.
2. Сервер декодирует входящие пакеты для Reticulum и сразу возвращает исходящую очередь (тоже в HDLC) в теле ответа.
3. Клиент принимает ответ, декодирует фреймы и передаёт пакеты в Reticulum.
4. После настраиваемого интервала опроса клиент повторяет цикл.

Особенности

Обход файрволов и DPI: Туннелирует трафик через стандартные порты HTTP/S (80/443).
Двунаправленная связь: Полнодуплексная передача данных.
Совместимое с Pipe фреймирование: HDLC FLAG/ESC как у T383838PipeInterface.
Простая настройка: Python, T383838httpx, Hypercorn/aioquic для HTTP/2–3 и Reticulum (T383838rns).
Надёжность: Повторное подключение с экспоненциальной задержкой.
Гибкость: Настраиваемые MTU и интервал опроса.
Совместимость с прокси: Caddy, Nginx и аналоги.
Повторное использование соединений: keep-alive / мультиплексирование.
HTTP/1.1, HTTP/2 и HTTP/3: T383838http_version = 1|2|3 (по умолчанию T3838381).

Начало работы

Требования

• Python 3.10 или новее
Poetry

Установка

1. Установите зависимости через Poetry (из корня репозитория):

T282828
poetry install

2. Установите пользовательский интерфейс: скопируйте T383838HTTPInterface.py в каталог интерфейсов Reticulum, например T383838~/.reticulum/interfaces/.

Тесты

T282828
poetry run pytest -m "not live"
poetry run pytest -m live

Конфигурация

Добавьте блок интерфейса в T383838~/.reticulum/config на сервере и на клиенте. Поле T383838type должно совпадать с именем модуля (T383838HTTPInterface).

Конфигурация сервера

T282828
[[HTTP Server Interface]]
type = HTTPInterface
enabled = true
mode = server
listen_host = 0.0.0.0
listen_port = 8080
mtu = 4096
check_user_agent = true
user_agent = RNS-HTTP-Tunnel/1.0

Конфигурация клиента

T282828
[[HTTP Client Interface]]
type = HTTPInterface
enabled = true
mode = client
server_url = http://your-server-ip-or-domain:8080/
poll_interval = 0.1
mtu = 4096
user_agent = RNS-HTTP-Tunnel/1.0

Параметры конфигурации

Общие

• T383838mtu: максимальный размер пакета в байтах (по умолчанию T3838384096)
• T383838user_agent: строка User-Agent (по умолчанию T383838RNS-HTTP-Tunnel/1.0)

Режим сервера

• T383838mode = server
• T383838listen_host (по умолчанию T3838380.0.0.0)
• T383838listen_port (по умолчанию T3838388080)
• T383838check_user_agent (по умолчанию T383838true)
• T383838serve_html_page / T383838html_file_path: необязательная HTML-страница на GET T383838/

Режим клиента

• T383838mode = client
• T383838server_url (обязателен)
• T383838poll_interval (по умолчанию T3838380.1)
• T383838http_version = 1|2|3 (по умолчанию T3838381)
• для T3838382 и T3838383: T383838https://, на сервере T383838tls_certfile / T383838tls_keyfile
• T383838tls_verify / T383838tls_ca_certs на клиенте
• T383838pool_connections / T383838pool_maxsize / T383838keepalive_timeout

Обратный прокси (пример Caddy)

T282828
example.yourdomain.com {
reverse_proxy 127.0.0.1:8080
header {
-Server
X-Content-Type-Options nosniff
}
}

Безопасность

• Используйте HTTPS там, где возможно.
• По умолчанию сервер проверяет User-Agent. Задайте одинаковый T383838user_agent на обеих сторонах или отключите проверку через T383838check_user_agent = false.

Лицензия

Проект распространяется под лицензией MIT.

Served by rngit 1.4.1 - Generated in 0.04s